This specification relates to how content-addressable storages store and retrieve files.
A version repository may create snapshots of files used for a project. Each snapshot may include multiple changes from its parent snapshots for the same project. The changes may be based on a status of the project, e.g., the status of an application during software development (in which new source code files are created during development), updates to a source code file (to make a method more efficient or remove a bug from the code), or to otherwise add additional features to the application.
Sometimes, a source code repository may use a content-addressable storage (CAS) to store snapshots for a code base. Because CAS systems never store duplicate copies of the same file, each subsequent snapshot in a CAS-based repository only uses storage to store the files that have changed, and refers to the unchanged files from previous snapshots. This may result in a substantial savings of storage requirements, relative to storing each snapshot in its entirety (often on the order of one hundred times less storage used).